
//去掉定时器的方法
class Task {
    constructor() {
        this.enable = true;
        this.周期任务 = null;
        this.定时任务 = null;
    }
    stop() {
        this.enable = false;
        if (this.周期任务 != null) {
            clearInterval(this.周期任务);
            this.周期任务 = null;
        } if (this.定时任务 != null) {
            clearTimeout(this.定时任务);
            this.定时任务 = null;
        }
    }
    async f周期有条件执行(方法, 条件, 周期) {
        while (this.enable && (条件())) {
            console.log("f周期有条件执行", 条件)
            await this.f倒计时执行(方法, 周期);
        }
    }
    async f周期有限次执行(方法, 次数, 周期) {
        let n = 次数
        while (this.enable && n > 0) {
            n--;
            //console.log("222")
            // console.log("f周期有条件执行",条件)
            await this.f倒计时执行(方法, 周期);
        }
    }
    /**
     * 
     * @param {Function} 执行 
     * @param {Numeric} 周期 
     */
    f周期执行(方法, 周期) {
        let self = this;
        return new Promise(function (正确, 异常) {
            self.周期任务 = setInterval(() => {
                方法()
                正确(true);
            }, 周期);
        })
    }
    f倒计时执行(方法, 倒计时) {
        let self = this;
        return new Promise(function (正确, 异常) {
            self.定时任务 = setTimeout(() => {
                方法()
                正确(true);
            }, 倒计时);
        })
    }
}


// function hello(){
//     console.log("hello");
// }
// var i=0
// function where(){
//     i++;
//     console.log("i"+i)
//     if (i>3) return false;
//     return true;
// }
// let task=new Task()
// await task.f周期有条件执行(hello,where,2000)
//await task.f周期有限次执行(hello,4,2000)

// await task.f倒计时执行(hello,3000)
// console.log("输出")

// for (let i = 0; i < 5; ++i) {
//     setTimeout(function() {
//         console.log('2: ',i);
//     }, 1000);
//     console.log('1: ', i); //新加一行代码
// }

//console.log(i);
